package com.heima.controller;


import com.baomidou.mybatisplus.extension.api.R;
import com.heima.common.PageResult;
import com.heima.common.Result;
import com.heima.pojo.dto.PartherDto;
import com.heima.pojo.dto.PartherIdDto;
import com.heima.pojo.dto.PartherSearchDto;
import com.heima.pojo.dto.SkuSearchDto;
import com.heima.pojo.entity.Partner;
import com.heima.pojo.vo.PartnerVO;
import com.heima.service.PartnerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.parameters.P;
import org.springframework.web.bind.annotation.*;

/**
 * 合作商管理
 */
@RestController
@RequestMapping("/api/user-service/partner")
@Api("合作商管理")
@Slf4j
public class PartnerController {

    @Autowired
    private PartnerService partnerService;

    /**
     * 新增合作商
     *
     * @param partherDto
     * @return
     */
    @PostMapping
    @ApiOperation("新增合作商")
    private Result partner(@RequestBody PartherDto partherDto) {
        log.info("新增合作商,{}", partherDto);
        partnerService.setPartner(partherDto);
        return Result.success("新增成功");
    }

    /**
     * 合作商搜索
     *
     * @param dto
     * @return
     */
    @GetMapping("/search")
    @ApiOperation("合作商搜索")
    public PageResult<Partner> search(PartherSearchDto dto) {
        log.info("合作商搜索,{}", dto);
        return partnerService.searchQuery(dto);

    }

    /**
     * 修改合作商
     *
     * @return
     */
    @PutMapping("/{id}")
    @ApiOperation("修改合作商")
    public Result getId(@PathVariable Integer id, @RequestBody PartherDto partnerDto) {
        log.info("修改合作商,id={}, data={}", id, partnerDto);
        partnerService.updatePartner(id, partnerDto);
        return Result.success("修改成功");
    }

    /**
     * 删除合作商
     *
     * @param id
     * @return
     */
    @DeleteMapping("/{id}")
    @ApiOperation("删除合作商")
    public Result deletePartner(@PathVariable Long id) {
        log.info("删除合作商,id={}", id);
        partnerService.removeById(id);
        return Result.success("删除成功");
    }

    @PutMapping("/resetPwd/{id}")
    @ApiOperation("重置合作商密码")
    public Result<Boolean> updatePwd(@PathVariable Long id) {
        log.info("重置合作商密码,id={}", id);
        // 1. 校验 ID
        if (id == null || id <= 0) {
            return Result.error("无效的合作商ID");
        }

        try {
            boolean success = partnerService.resetPassword(id);
            if (!success) {
                return Result.error("重置密码失败，可能合作商不存在");
            }
            return Result.success(success);
        } catch (Exception e) {
            log.error("重置合作商密码异常，ID: {}", id, e);
            return Result.error("系统异常，密码重置失败");
        }


    }


}
